Qt 利用QGraphicsView和 QGraphicsScene 绘制点位 ,十字架定位数据点。 | 您所在的位置:网站首页 › hyper snap6如何画点 › Qt 利用QGraphicsView和 QGraphicsScene 绘制点位 ,十字架定位数据点。 |
本文都是个人的一些工作经历所使用的小功能,仅供借鉴。 介绍: QGraphicsView 可以理解为提供了一个窗体这个窗体,他的值时固定的,他的作用是限定了一个视图的视野。 QGraphicsScene 可以理解成一个画布,就是画东西需要多大的一张纸。通过这张纸我们才能画图案。 案例说明: 个人已经在ui上托拽了一个QGraphicsView控件,所以本文不新定义这样的一个实例,直接使用控件的实例。 代码: void test002::test0000002222(QVector point_xy,int lenth) { //创建场景和视图 //QGraphicsScene *scene= new QGraphicsScene(QRectF(QPointF(0, 0), QSizeF(2000, 2000))); //头文件已经声明了一个QGraphicsScene,所以不用第一个语句了。这里是一个方形的画布2000,2000的。 scene= new QGraphicsScene(QRectF(QPointF(0, 0), QSizeF(2000, 2000))); ui->pcb_View->setScene(scene);//之前说了这是一个QGraphicsView控件,我在ui上托拽了旧不再定义,这是设置画布。了直接用。 ui->pcb_View->setDragMode(QGraphicsView::ScrollHandDrag);// 设置拖拽模式,有一个小手,单击后可以托拽画布。移动视野 // 设置视图的大小 ui->pcb_View->setMinimumSize(500, 400);//窗体大小,窗体ui上也可以不设置。 //ui->graphicsView->setSceneRect(0,0,1000, 800);//窗体内部画布大小 // 计算场景矩形的中心点,因为我想要把窗体的视野移动到中心。 QRectF rect = scene->sceneRect(); QPointF centerPoint = rect.center(); // 将视图中心点设置为场景中心点 ui->pcb_View->setTransformationAnchor(QGraphicsView::AnchorUnderMouse); ui->pcb_View->centerOn(centerPoint); ui->pcb_View->setBackgroundBrush(QColor(180, 180, 180));//画布背景色 // 添加点位信息 //我绘制的东西放到画布的中间显示,通过计算之后我的画布位置在加上这个值之后会得到一个从中间显示的一些信息。 //见图1,我绘制一个草图。 for(int i =0 ;i < lenth ;i++) { //scene->addEllipse(),这里就是添加点位了,我这里是传值的,你们也可以直接使用一些点。 //addEllipse是绘制椭圆,4,4是绘制成高宽都为4的椭圆。 QGraphicsEllipseItem *item = scene->addEllipse(QRectF(point_xy.at(i).x()+ 250.000 , point_xy.at(i).y()+ 200.000 , 4, 4), QPen(Qt::black), QBrush(Qt::black)); qDebug() type() == QGraphicsLineItem::Type) { // 找到线段项 itemToRemove.append(item); } } for(QGraphicsItem* item2 : itemToRemove){ scene->removeItem(item2);//这里才是正在的清理线条 delete item2;//内存释放 } //绘制点 QPointF p1(QString(globalrowdata[14]).toDouble() + 252,QString(globalrowdata[15]).toDouble() + 202 ); //qDebug() |
CopyRight 2018-2019 实验室设备网 版权所有 |